# 导入 matplotlib 的 pyplot 子库，提供绘图API
import matplotlib.pyplot as plt
# 导入 sklearn 的 linear_model 模块
from sklearn import linear_model
# 导入 科学计算库
import numpy as np

# 加载数据，建立回归方程
# 存储房屋的尺寸和价格
datasets_X = []
datasets_Y = []

fr = open(r'./data/prices.txt', 'r')
lines = fr.readlines()

for line in lines:
    items = line.strip().split(',')
    datasets_X.append(int(items[0]))
    datasets_Y.append(int(items[1]))

# 数据长度
length = len(datasets_X)
# 对 datasets_X 转化为数组，并转置（变成二维），以符合线性回归拟合函数输入参数要求
datasets_X = np.array(datasets_X).reshape([length, 1])
# 将 datasets_Y 转化为数组
datasets_Y = np.array(datasets_Y)

minX = min(datasets_X)
maxX = max(datasets_X)

# 以 datasets_X 的最大值和最小值建立等差数列，方便后续画图
X = np.arange(minX, maxX).reshape([-1, 1])

# 建立线性回归方程，拟合数据
linear = linear_model.LinearRegression()
linear.fit(datasets_X, datasets_Y)

# 查看回归方程系数
print('系数因子 coef ficient：', linear.coef_)
# 查看回归方程截距
print('截距 intercept：', linear.intercept_)

# 数据可视化(尽量不要用中文)
# scatter 绘制散点图
plt.scatter(datasets_X, datasets_Y, color='red')
# plot 绘制直线
plt.plot(X, linear.predict(X), color='blue')
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
